/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



package Test.Moteur;

//~--- non-JDK imports --------------------------------------------------------

import Risk.Moteur.Joueur;
import Risk.Moteur.Pays;
import Risk.Moteur.Plateau;

//~--- JDK imports ------------------------------------------------------------

import java.awt.Color;

import java.io.File;

import java.util.ArrayList;

/**
 *
 * @author alex
 */
public class TestPays {
    public static void main(String[] args) {
        Joueur             rouge          = null;
        Joueur             bleue          = null;
        Pays               EuropeN        = null;
        Pays               EuropeS        = null;
        int                resultat       = 0,
                           compteur       = 1,
                           nbArmeeDef     = 0;
        ArrayList<Integer> jetDeAttaquant = new ArrayList<Integer>();
        ArrayList<Integer> jetDeDefenseur = new ArrayList<Integer>();
        Plateau            p              = new Plateau();

        p.initialisationContinents("." + File.separator + "src" + File.separator + "Risk" + File.separator + "Moteur"
                                   + File.separator + "donnee" + File.separator + "renfort_continents.prn");
        System.out.println("" + p.getContinents());

//      init pays 1
        EuropeN = new Pays("EuropeN", "canon", p);
        EuropeN.initialiseVoisins("." + File.separator + "src" + File.separator + "Risk" + File.separator + "Moteur"
                                  + File.separator + "donnee" + File.separator + "voisins.prn");
        System.out.println("EuropeN => " + EuropeN.getVoisins());

        // init pays 2
        EuropeS = new Pays("EuropeS", "canon", p);
        EuropeS.initialiseVoisins("." + File.separator + "src" + File.separator + "Risk" + File.separator + "Moteur"
                                  + File.separator + "donnee" + File.separator + "voisins.prn");
        System.out.println("EuropeS => " + EuropeS.getVoisins());

        // test bataille
        rouge = new Joueur("rouge", Color.red);
        bleue = new Joueur("bleue", Color.blue);
        EuropeN.setNbArmee(50);
        EuropeN.setJoueur(rouge);
        EuropeS.setNbArmee(30);
        EuropeS.setJoueur(bleue);
        System.out.println("EuropeN voisins de EuropeS ? " + EuropeN.testFrontiere(EuropeS));

        // manuel
        jetDeAttaquant.add(6);
        jetDeAttaquant.add(6);
        jetDeAttaquant.add(6);
        System.out.println("jets attaque = " + jetDeAttaquant);
        jetDeDefenseur.add(6);
        jetDeDefenseur.add(5);
        System.out.println("jets defense = " + jetDeDefenseur);
        resultat = EuropeN.attaque(EuropeS, jetDeAttaquant, jetDeDefenseur);
        System.out.println("Armees restante en EuropeN = " + EuropeN.getNbArmee() + " appartient a "
                           + EuropeN.getJoueur().getNom());
        System.out.println("Armees restante en EuropeS = " + EuropeS.getNbArmee() + " appartient a "
                           + EuropeS.getJoueur().getNom());
        System.out.println("-----------------------------------------------");

        // aleatoire
        do {
            if (compteur > 1000) {
                break;
            }

            System.out.println("Bataille n°" + (compteur++));
            jetDeAttaquant = Pays.jetAttaquant(3, EuropeN);
            System.out.println("jets attaque = " + jetDeAttaquant);

            if (EuropeS.getNbArmee() >= 2) {
                nbArmeeDef = 2;
            } else {
                nbArmeeDef = EuropeS.getNbArmee();
            }

            jetDeDefenseur = Pays.jetDefenseur(nbArmeeDef, EuropeS);
            System.out.println("jets defense = " + jetDeDefenseur);
            resultat = EuropeN.attaque(EuropeS, jetDeAttaquant, jetDeDefenseur);
            System.out.println("Armees restante en EuropeN = " + EuropeN.getNbArmee() + " appartient a "
                               + EuropeN.getJoueur().getNom());
            System.out.println("Armees restante en EuropeS = " + EuropeS.getNbArmee() + " appartient a "
                               + EuropeS.getJoueur().getNom());
            System.out.println("-----------------------------------------------");
        } while (resultat != Pays.VAINQUEUR);
        
        //test erreur
        jetDeAttaquant = Pays.jetAttaquant(4, EuropeN);
        EuropeN.attaque(EuropeS, jetDeAttaquant, jetDeDefenseur);
        
        jetDeAttaquant = Pays.jetAttaquant(3, EuropeN);
        jetDeDefenseur = Pays.jetDefenseur(3, EuropeS);
        EuropeN.attaque(EuropeS, jetDeAttaquant, jetDeDefenseur);
    }
}
